package org.lanyu.springainovel.common.service;

import org.lanyu.springainovel.common.entity.User;

/**
 * 用户缓存服务接口
 * 提供用户信息缓存功能，减少数据库查询
 */
public interface UserCacheService {
    
    /**
     * 根据用户名获取用户信息（优先从缓存获取）
     * 
     * @param username 用户名
     * @return 用户信息，如果不存在则返回null
     */
    User getUserByUsername(String username);
    
    /**
     * 根据用户ID获取用户信息（优先从缓存获取）
     * 
     * @param userId 用户ID
     * @return 用户信息，如果不存在则返回null
     */
    User getUserById(Long userId);
    
    /**
     * 将用户信息存入缓存
     * 
     * @param user 用户信息
     */
    void cacheUser(User user);
    
    /**
     * 更新缓存中的用户信息
     * 
     * @param user 用户信息
     */
    void updateUser(User user);
    
    /**
     * 从缓存中删除用户信息
     * 
     * @param userId 用户ID
     */
    void evictUser(Long userId);
    
    /**
     * 从缓存中删除用户信息
     * 
     * @param username 用户名
     */
    void evictUser(String username);
    
    /**
     * 清空所有用户缓存
     */
    void clearAll();
}